package demo1;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/** 使用Spring容器来管理项目中要使用的所有类
 *  将创建、初始化类等操作的控制权转交给Spring容器来管理，称为“控制反转 IOC(Inverse Of Control)”
 */
public class Demo {
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        //常规new
        User user = new User();
        user.sayHello();
        //反射
        Class cls = Class.forName("demo1.User");
        //Object obj = cls.newInstance(); // obj只能访问Object类中的成员
        //obj.sayHello(); //这里obj.不出sayHello 因为超类不能访问子类中成员 因此需要强转
        User u = (User)cls.newInstance();
        u.sayHello();

        //Spring框架提供的核心类，用于管理项目中的类
        //指定让Spring框架扫描的包，框架会扫描该包下的所有类以及该包子包中的类
        AnnotationConfigApplicationContext context
                = new AnnotationConfigApplicationContext("demo1");
        User user2 = context.getBean(User.class);
        user2.sayHello();




















    }
}
